#include<stdio.h>
#include<stdlib.h>
/*
顺序查找,此处的table是无序的，
若有序（从小到大），使用顺序查找（从尾到头）,找到第一个小于自己还没有找到
就可以停止返回了
*/
#define pass 
typedef int ElementType;

typedef struct{
    ElementType *elem;//数组基址
    int tableLength;
}SSTable;

SSTable t;//用来测试

/**
    书上278页，说0下标处赋值为key做哨兵，他成立的前提是
    吧数据存储在数组的1-size位置，0号位置作为查找失败的结果
    @param: st  带查找的数组
    @param: key
    @return: i 返回下标
 */
int searchSeq(SSTable st,ElementType key){
    st.elem[0]=key;//哨兵，减少判断次数
    int i=0;
    for(i=st.tableLength;st.elem[i]!=key;--i){
        pass //空操作
    }  
    return i;
}
//在初始化的时候要多初始化一个位置，存放key
void initTable(){
    printf("table length: ");
    scanf("%d",&t.tableLength);
    t.elem=(ElementType*)malloc(sizeof(int) * (t.tableLength+1));
    printf("elemtn value: ");
    for(int i=1;i<=t.tableLength;i++){
        scanf("%d",&t.elem[i]);
    }
}
void showTable(){
    printf("init success: ");
    for(int i=0;i<=t.tableLength;i++){
        printf("%d ",t.elem[i]);
    }
}
int main(int argc,char* argv){
    initTable();
    showTable();
    int key;
    printf("input a key for search:");
    scanf("%d",&key);
    int index=searchSeq(t,key);
    printf("index of %d is %d\n",key,index);
    return 0;
}